//#include <iostream>
//#include <string>
//#include <map>
//using namespace std;
//
//int main()
//{
//    string str;
//    cin >> str;
//    map<char, int> m;
//    int ret = 0;
//    for (int left = 0, right = 0; right < str.size(); right++)
//    {
//        if (!m.count(str[right]))
//        {
//            m[str[right]] = 1;
//            ret = max(ret, right - left + 1);
//        }
//        else
//        {
//            m.clear();`~
//            m[str[right]] = 1;
//            left = right;
//        }
//    }
//    cout << ret;
//    return 0;
//}


/*
class Solution {
public:
    int findMaxLength(vector<int>& nums) {
        for (int i = 0; i < nums.size(); i++)
        {
            if (!nums[i])
                nums[i] = -1;
        }

        unordered_map<int, int> hash;
        hash[0] = -1;
        int sum = 0, ret = 0;
        for (int i = 0; i < nums.size(); i++)
        {
            sum += nums[i];
            if (hash.count(sum))
                ret = max(ret, i - hash[sum]);
            else
                hash[sum] = i;
        }
        return ret;
    }
};

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int hash[128] = { 0 }, ret = 0;
        for (int left = 0, right = 0; right < s.size(); right++)
        {
            hash[s[right]]++;
            while (hash[s[right]] > 1)
                hash[s[left++]]--;
            ret = max(ret, right - left + 1);
        }
        return ret;
    }
};


*/